package cn.iocoder.yudao.module.asasc.dal.dataobject.campaign;

import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 广告数据 DO
 *
 * @author 芋道源码
 */
@TableName("asa_campaign_data")
@KeySequence("asa_campaign_data_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CampaignDataDO extends TenantBaseDO {
    /**
     * id
     */
    @TableId
    private Long id;
    /**
     * 组织 ID
     */
    private Long orgId;
    /**
     * 应用 ID
     */
    private Long adamId;
    /**
     * 日期
     */
    private LocalDate date;
    /**
     * 国家或地区代码
     */
    private String countryOrRegion;
    /**
     * 展示次数
     */
    private Integer impressions;
    /**
     * 点击次数
     */
    private Integer taps;
    /**
     * 总安装次数
     */
    private Integer installs;
    /**
     * 新安装次数
     */
    private Integer newDownloads;
    /**
     * 重复安装次数
     */
    private Integer reDownloads;
    /**
     * 启用定位安装次数
     */
    private Integer latOnInstalls;
    /**
     * 禁用定位安装次数
     */
    private Integer latOffInstalls;
    /**
     * 点击率
     */
    private BigDecimal ttr;
    /**
     * 每次转化费用
     */
    private BigDecimal avgCpaAmount;
    /**
     * 转化货币
     */
    private String avgCpaCurrency;
    /**
     * 每次点击付费
     */
    private BigDecimal avgCptAmount;
    /**
     * 点击货币
     */
    private String avgCptCurrency;
    /**
     * 每千次展示付费
     */
    private BigDecimal avgCpmAmount;
    /**
     * 展示货币
     */
    private String avgCpmCurrency;
    /**
     * 支出金额
     */
    private BigDecimal localSpendAmount;
    /**
     * 支出货币
     */
    private String localSpendCurrency;
    /**
     * 转化率
     */
    private BigDecimal conversionRate;
    /**
     * 广告系列 ID
     */
    private Long campaignId;
    /**
     * 广告系列名称
     */
    private String campaignName;
    /**
     * 是否删除
     */
    private Boolean isDeleted;
    /**
     * 广告系统状态
     */
    private String campaignStatus;
    /**
     * 应用名称
     */
    private String appName;
    /**
     * 状态
     */
    private String servingStatus;
    /**
     * 国家或地区
     */
    private String countriesOrRegions;
    /**
     * 修改时间
     */
    private LocalDateTime modificationTime;
    /**
     * 日预算金额
     */
    private Long dailyBudgetAmount;
    /**
     * 日预算货币
     */
    private String dailyBudgetCurrency;
    /**
     * 展示状态
     */
    private String displayStatus;
    /**
     * 广告展示位置
     */
    private String supplySources;
    /**
     * 广告渠道类型
     */
    private String adChannelType;
    /**
     * 计费方式
     */
    private String billingEvent;

    //****************** 新增 AppStore Sales 字段 ************/
    /**
     * 订阅销售额
     */
    private BigDecimal ascSales;
    /**
     * 订阅所得
     */
    private BigDecimal ascProceeds;
    /**
     * 展示次数
     */
    private Integer ascImpressions;
    /**
     * 点击次数
     */
    private Integer ascTaps;

    /**
     * 首次安装次数
     */
    private Integer ascInstalls;

    /**
     * 重新安装次数
     */
    private Integer ascReInstalls;
    /**
     * 更新安装次数
     */
    private Integer ascUptInstalls;
    /**
     * 点击率
     */
    private BigDecimal ascTtr;
    /**
     * 转化率
     */
    private BigDecimal ascConversionRate;
    /**
     * 试订数
     */
    private Integer ascTrial;
    /**
     * 订阅数
     */
    private Integer ascRenewal;
    /**
     * 退款数
     */
    private Integer ascRefund;
    /**
     * 订阅退款销售额
     */
    private BigDecimal ascRefundSales;
    /**
     * 订阅退款所得
     */
    private BigDecimal ascRefundProceeds;

    /**
     * 自然新增=总首次安装-广告安装(经点击)
     */
    private Integer naturallyInstalls;
    /**
     * 利润=订阅所得-订阅退款所得-广告支出
     */
    private BigDecimal profit;
    /**
     * 试订率=新增用户/试订数
     */
    @TableField(exist = false)
    private BigDecimal trialRate;
}